/**
 * @description: 格式化时间
 * @param:
 *         date :待s格式化的时间
 *         step(不传默认返回当前时间) :在当前时间基础上加|减 step(单位 type )
 *         format(不传返回yyyy-MM-dd): 返回时间格式： "yyyy-MM-dd"、"yyyy-MM-dd hh:mm:ss"
 *         type(step格式，不传默认小时): day、month
 * @return 返回格式化之后的时间
 */
export function dateFormat (date, step = 0, format = 'yyyy-MM-dd', type = '') {
    const dateTime = new Date(date)
    let result = ''
    switch (type) {
    case 'day': {
        result = new Date(dateTime.getTime() + step * 3600 * 1000 * 24)
        break
    }
    case 'month': {
        result = new Date(dateTime.getTime() + step * 3600 * 1000 * 24 * 31)
        break
    }
    default: {
        result = new Date(dateTime.getTime() + step * 3600 * 1000)
    }
    }

    var o = {
        'M+': result.getMonth() + 1, // 月份
        'd+': result.getDate(), // 日
        'h+': result.getHours(), // 小时
        'm+': result.getMinutes(), // 分
        's+': result.getSeconds(), // 秒
        'q+': Math.floor((result.getMonth() + 3) / 3), // 季度
        S: result.getMilliseconds() // 毫秒
    }
    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (result.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (var k in o) {
        if (new RegExp('(' + k + ')').test(format)) {
            format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
        }
    }
    return format === '' ? result : format
}
